Questão 9 - HCPA 2016 - ANALISTA DE TI (DESENVOLVIMENTO)
questão 9 trigger postgresql
Veja abaixo como resolver a questão sobre gatilhos (triggers) no PostgreSQL.
Analise a sintaxe para gatilhos do PostgreSQL.
CREATE TRIGGER nome { BEFORE | AFTER } { evento [ OR ... ] }
ON tabela [ FOR [ EACH ] { ROW | STATEMENT } ]
EXECUTE PROCEDURE nome_da_função ( argumentos )
A respeito dessa sintaxe, assinale a alternativa que apre-
senta a afirmação correta.
(A) O comando CREATE TRIGGER cria um gatilho que
fica associado a todas as tabelas do banco de dados
e executa a função especificada nome_da_função
quando ocorre uma nova inserção no banco de
dados.
(B) Um gatilho que está marcado com FOR EACH
STATEMENT é chamado uma vez para cada linha
que a operação modifica.
(C) Um gatilho que está marcado com FOR EACH ROW
é chamado uma única vez para uma determinada
operação, não importando quantas linhas sejam
modificadas.
(D) Se existirem vários gatilhos do mesmo tipo, definidos
para o mesmo evento, estes serão disparados
em ordem crescente de especificação no banco de
dados.
(E) Se BEFORE for utilizado, o gatilho pode fazer com
que a operação não seja realizada para a linha
corrente ou pode modificar a linha que está sendo
inserida (para as operações de INSERT e UPDATE
somente).
Resposta correta:
A alternativa correta é a letra (E). Aqui está a análise de cada alternativa:
Análise das alternativas:
(A) Esta afirmação está incorreta. O comando CREATE TRIGGER cria um gatilho que está associado a uma tabela específica e não a todas as tabelas do banco de dados. Além disso, o gatilho não é acionado para cada nova inserção no banco de dados, mas sim quando um evento específico ocorre na tabela associada.
(B) Esta afirmação está incorreta. Um gatilho marcado com FOR EACH STATEMENT é acionado apenas uma vez para cada operação de instrução, independentemente do número de linhas que a operação modifica.
(C) Esta afirmação está incorreta. Um gatilho marcado com FOR EACH ROW é acionado para cada linha afetada pela operação que desencadeou o gatilho. Portanto, o gatilho é chamado uma vez para cada linha afetada.
(D) Esta afirmação está incorreta. A ordem de execução dos gatilhos não é garantida e não é determinada pela ordem de especificação no banco de dados.
(E) Esta afirmação está correta. Quando BEFORE é utilizado, o gatilho é acionado antes da operação ser realizada. Isso permite que o gatilho modifique a linha que está sendo inserida ou atualizada (apenas para operações de INSERT e UPDATE) ou até mesmo impeça a operação de ser realizada.
Temática da questão
O assunto dessa questão é sobre gatilhos (triggers) no PostgreSQL. Para dominar esse assunto, é importante entender a sintaxe e o funcionamento dos gatilhos, incluindo os diferentes tipos de eventos (BEFORE e AFTER) e os modificadores FOR EACH ROW e FOR EACH STATEMENT. Estudar a documentação oficial do PostgreSQL sobre gatilhos e praticar a criação e o uso de gatilhos em bancos de dados PostgreSQL ajudará na compreensão e resolução de questões semelhantes.
Leia mais em: onteudo.portalfaurgs.com.br/a...